#include <stdio.h>
#include <unistd.h>
#include <iot_gpio.h>
#include <iot_gpio_ex.h>
#include <iot_spi.h>
#include "oled.h"
#include "ohos_init.h"
#include "cmsis_os2.h"
#include "gui.h"

#define OLED_TASK_STACK_SIZE 4096

 /* task处理函数 */
void OLedTask(void * para)
{
    printf("OLED task \r\n");
    OLED_Init();               //初始化OLED  
    OLED_Clear(0);  
    // 绘制一个空心圆
    GUI_DrawCircle(64, 13, 1, 13); // 圆心 (64, 16)，半径 10，颜色为白色 (1)

    // 五角星的顶点坐标
    u8 x1 = 50, y1 = 10;  // 顶点1
    u8 x2 = 64, y2 = 0;  // 顶点2
    u8 x3 = 78, y3 = 10;  // 顶点3
    u8 x4 = 71, y4 = 25;  // 顶点4
    u8 x5 = 57, y5 = 25;  // 顶点5

    // 绘制五角星
    GUI_DrawLine(x1, y1, x3, y3, 1); // 1->3
    GUI_DrawLine(x3, y3, x5, y5, 1); // 3->5
    GUI_DrawLine(x5, y5, x2, y2, 1); // 5->2
    GUI_DrawLine(x2, y2, x4, y4, 1); // 2->4
    GUI_DrawLine(x4, y4, x1, y1, 1); // 4->1

    // 在下方显示学号 "2022190015"
    GUI_ShowString(40, 35, "2022190015", 8, 1); // 字体大小 8
    // 在下方显示学号 "2024382023"
    GUI_ShowString(40, 45, "2024382023", 8, 1); // 字体大小 8
    
    
    OLED_Display();
    return NULL;
}
 /* 创建oled任务函数 */
void oled_demo(void)
{    
    int ret;
    oled_gpio_io_init();
    screen_spi_master_init(0); 
    osThreadAttr_t attr;
 
    attr.name = "OLedTask";
    attr.attr_bits = 0U;
    attr.cb_mem = NULL;
    attr.cb_size = 0U;
    attr.stack_mem = NULL;
    attr.stack_size = OLED_TASK_STACK_SIZE;
    attr.priority = 20;
    if (osThreadNew((osThreadFunc_t)OLedTask, NULL, &attr) == NULL) {
        printf("[OLedExample] Falied to create LedTask1!\n");
    }
}
APP_FEATURE_INIT(oled_demo);